<?php
/**
 * Модель категорий задач
 * Может загрузить катеогии массово
 */
class TaskCategoryModel extends AbstractModel{
  protected $tableName = 'task_category';

  protected $primaryKey = array(
    'task_category_id',
  );

  public  $columnTypes = array(
    'task_category_id'=>'uuid',
    'is_reportable'=>'bool',
  );

  public  $data = array(
    'task_category_id'=>'',
    'company_id'=>null,
    'task_category_name'=>null,
    'category_label'=>null,
    'price_value'=>null,
    'is_reportable'=>true,
  );


  /**
   * Достает запись из БД по ИД
   * Возвращает в виде объекта модели
   * @param String $company_id
   * @return TaskCategoryModel
   */
	static public function getByID( $task_category_id ){
		$db = DBFacade::getConnection();
		$sql='SELECT * FROM task_category WHERE task_category_id = ?';
    $dbh = $db->prepare($sql);
		$dbh->execute( array($task_category_id) );
    $line = $dbh->fetch();
		if (!empty($line)) return new TaskCategoryModel($line);
		else return false;
	}

  /**
   * Дотсает все элементы категорий задач по ИД компании
   * Возвращает в ассоциированном массиве с ключами равными ИД записи
   * @param String $company_id
   * @return array of TaskCategoryModel
   */
	static public function getByCompanyIdAsDictionary( $company_id ) {
    // цепляем данные из БД
		$db = DBFacade::getConnection();
		$sql='SELECT * FROM task_category WHERE company_id = ? ORDER BY price_value DESC';
    $dbh = $db->prepare($sql);
		$dbh->execute( array($company_id) );
    $data = $dbh->fetchAll();
    // возвращаем данные
		$result = array();
    foreach ($data as $line){
      $result[$line['task_category_id']] = new TaskCategoryModel($line);
    }
		return $result;
	}
}


